package com.fyb.connotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @Author：MR.FANG
 * @name：Idempotent
 * @Date：2025/6/10 上午9:46
 */
@Inherited
@Target(ElementType.METHOD)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Idempotent {

    /**
     * 如果是实体类的话,默认拦截不会生效. objects.toString()会返回不同地址.
     * @return
     */
    String key() default "";

    /**
     * 有效期 默认1 有效期要大于程序执行时间，否则请求还是可能会进来
     * @return
     */
    int expireTime() default 1;

    /**
     *时间单位默认：s
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 提示信息，可自定义
     * @return
     */
    String info() default "";

    /**
     * 是否在业务完成后删除key true：删除 false:不删除
     * @return
     */
    boolean delKey() default false;

}
